package Assignment;

//目前只支持文本文件，后续添加图片功能

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class Assignment {
    public static void main(String[] args) throws IOException {
        boolean bol;
        do{



            System.out.println("是否继续执行？");//询问用户是否使用或继续使用此功能
            System.out.println("Yes------No");
            Scanner sc=new Scanner(System.in);
            String str=sc.next();
            if("No".equals(str)){
                break;
            }

            bol=work();//执行文件复制器的功能

        }while(bol);

    }

    public static boolean work() throws IOException {
    System.out.println("请输入目标文件：");
    Scanner sc1=new Scanner(System.in);//输入目标文件路径
    String filename=sc1.next();
    File file=new File(filename);//如果目标不是文件或者文件不存在就报错返回
    if(!(file.exists()&&file.isFile()))
    {
        System.out.println("文件格式错误");
        return true;
    }

        Scanner sc2=new Scanner(System.in);
        System.out.println("请输入目标路径");
        String pathname=sc2.next();
    File dir=new File(pathname);//如果路径不存在或者是文件则报错返回
        if(!dir.exists()&&dir.isFile())
        {
            System.out.println("目标路径错误");
            return true;
        }

        int dex=filename.lastIndexOf('\\');
        String tem=filename.substring(dex+1);
        pathname=pathname.concat(tem);//生成目标路径对应的复制后的文件路径

        dex=filename.lastIndexOf('.');
        tem=filename.substring(dex+1);

        //判断文件类型选择IO流的类型，后续可以根据需求继续添加
        if("txt".equals(tem)) {
            chReserve(file, pathname);
        }else if("jpg".equals(tem)||"png".equals(tem)||"docx".equals(tem)){
            bReserve(file,pathname);
        }

        return false;
    }

    //字符流
    public static void chReserve(File file, String pathname) throws IOException
    {
        FileReader in=new FileReader(file);
        FileWriter out=new FileWriter(pathname);

        int len=0;
        ArrayList<Integer>list=new ArrayList<Integer>();
        while((len=in.read())!=-1)
        {
            list.add(len);//将目标文件的内容存进集合中
        }
        in.close();

        for(int i=0;i<list.size();i++)
        {
            out.write(list.get(i));//将内容输出到目标路径
        }
        out.close();
    }


    //字节流
    public static void bReserve(File file, String pathname) throws IOException
    {
        FileOutputStream out=new FileOutputStream(pathname);
        FileInputStream in=new FileInputStream(file);

        int len=0;
        ArrayList<Integer>list=new ArrayList<Integer>();
        while((len=in.read())!=-1)
        {
            list.add(len);//将目标文件的内容存进集合中
        }
        in.close();

        for(int i=0;i<list.size();i++)
        {
            out.write(list.get(i));//将内容输出到目标路径
        }
        out.close();

    }
}
